package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs12 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// TIPOPERCEPCIONDESCUENTO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TIPOPERCEPCIONDESCUENTO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			RangoTO rangoTO = new RangoTO();
			rangoTO.setIdRango(3);

			TipoPercepcionDescuentoDAO rangoPDDAO = fabricaMySQL
					.getTipoPercepcionDescuentoDAO();
			TipoPercepcionDescuentoTO rangoPDTO = new TipoPercepcionDescuentoTO(
					0, "cruz roja", rangoTO);

			// insert
			if (rangoPDDAO.insertTipoPercepcionDescuento(rangoPDTO)) {
				rangoPDDAO.insertTipoPercepcionDescuento(rangoPDTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza
			rangoPDTO.setIdTipoPercepcionDescuento(1);
			rangoTO.setIdRango(2);
			rangoPDTO.setRangoTO((rangoTO));

			resultado = rangoPDDAO.updateTipoPercepcionDescuento(rangoPDTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			rangoPDTO = rangoPDDAO.findTipoPercepcionDescuentoById(1);
			if (rangoPDTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOPERCEPCIONDESCUENTO");
				ImprimirTO.Imprime(rangoPDTO);
				System.out.println("RANGO");
				ImprimirTO.Imprime(rangoPDTO.getRangoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out.println("------------------------- BUSQUEDA POR NOMBRE");
			rangoPDTO = rangoPDDAO
					.findTipoPercepcionDescuentoByNombre("cruz roja");
			if (rangoPDTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOPERCEPCIONDESCUENTO");
				ImprimirTO.Imprime(rangoPDTO);
				System.out.println("RANGO");
				ImprimirTO.Imprime(rangoPDTO.getRangoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT TIPOPERCEPCIONDESCUENTO +**");
			java.util.Collection<TipoPercepcionDescuentoTO> listTipoPercepcionDescuentoTO = rangoPDDAO
					.selectTipoPercepcionDescuento();
			if (listTipoPercepcionDescuentoTO != null) {
				for (int i = 0; i < listTipoPercepcionDescuentoTO.size(); i++) {
					rangoPDTO = ((ArrayList<TipoPercepcionDescuentoTO>) listTipoPercepcionDescuentoTO)
							.get(i);
					System.out.println("TIPOPERCEPCIONDESCUENTO");
					ImprimirTO.Imprime(rangoPDTO);
					System.out.println("RANGO");
					ImprimirTO.Imprime(rangoPDTO.getRangoTO());
				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR RANGO");
			rangoPDTO = rangoPDDAO.selectTipoPercepcionDescuentoByRango(3);
			if (rangoPDTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOPERCEPCIONDESCUENTO");

				for (int x = 0; x < rangoPDTO
						.getListIdTipoPercepcionDescuento().length; x++) {
					System.out.println("IDTIPOPERCEPCIONDESCUENTO");
					System.out.println(rangoPDTO
							.getListIdTipoPercepcionDescuento()[x]);
				}
				for (int x = 0; x < rangoPDTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(rangoPDTO.getListNombre()[x]);
				}

				System.out.println("RANGO");
				ImprimirTO.Imprime(rangoPDTO.getRangoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// DESCUENTO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<DESCUENTO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoPercepcionDescuentoTO tipoPDTO = new TipoPercepcionDescuentoTO();
			tipoPDTO.setIdTipoPercepcionDescuento(4);

			DescuentoDAO descuentoDAO = fabricaMySQL.getDescuentoDAO();
			DescuentoTO descuentoTO = new DescuentoTO(0, "recolecta anual",
					"esta cuota es obligatoria para todos", tipoPDTO);

			// insert
			if (descuentoDAO.insertDescuento(descuentoTO)) {
				descuentoDAO.insertDescuento(descuentoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza
			descuentoTO.setIdDescuento(1);
			tipoPDTO.setIdTipoPercepcionDescuento(2);
			descuentoTO.setNombre("cr colecta");
			descuentoTO.setTipoPercepcionDescuentoTO((tipoPDTO));

			resultado = descuentoDAO.updateDescuento(descuentoTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			descuentoTO = descuentoDAO.findDescuentoById(1);
			if (descuentoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("DESCUENTO");
				ImprimirTO.Imprime(descuentoTO);
				System.out.println("TIPOPD");
				ImprimirTO.Imprime(descuentoTO.getTipoPercepcionDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca
			System.out.println("------------------------- BUSQUEDA POR NOMBRE TIPOPD");
			descuentoTO = descuentoDAO.findDescuentoByNombreTipoPD("cr colecta", 2);
			if (descuentoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("DESCUENTO");
				ImprimirTO.Imprime(descuentoTO);
				System.out.println("TIPOPD");
				ImprimirTO.Imprime(descuentoTO.getTipoPercepcionDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT DESCUENTO +**");
			java.util.Collection<DescuentoTO> listDescuentoTO = descuentoDAO
					.selectDescuento();
			if (listDescuentoTO != null) {
				for (int i = 0; i < listDescuentoTO.size(); i++) {
					descuentoTO = ((ArrayList<DescuentoTO>) listDescuentoTO)
							.get(i);
					System.out.println("DESCUENTO");
					ImprimirTO.Imprime(descuentoTO);
					System.out.println("TIPOPD");
					ImprimirTO.Imprime(descuentoTO
							.getTipoPercepcionDescuentoTO());
				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}
			
			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT DESCUENTO BY NOMBRE+**");
			listDescuentoTO = descuentoDAO.selectDescuentoByNombre("cr colecta");
			if (listDescuentoTO != null) {
				for (int i = 0; i < listDescuentoTO.size(); i++) {
					descuentoTO = ((ArrayList<DescuentoTO>) listDescuentoTO)
							.get(i);
					System.out.println("DESCUENTO");
					ImprimirTO.Imprime(descuentoTO);
					System.out.println("TIPOPD");
					ImprimirTO.Imprime(descuentoTO
							.getTipoPercepcionDescuentoTO());
				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOPD");
			descuentoTO = descuentoDAO.selectDescuentoByTipoPD(3);
			if (descuentoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("DESCUENTO");

				for (int x = 0; x < descuentoTO.getListIdDescuento().length; x++) {
					System.out.println("IDDESCUENTO");
					System.out.println(descuentoTO.getListIdDescuento()[x]);
				}
				for (int x = 0; x < descuentoTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(descuentoTO.getListNombre()[x]);
				}
				for (int x = 0; x < descuentoTO.getListDescripcion().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(descuentoTO.getListDescripcion()[x]);
				}

				System.out.println("TIPOPD");
				ImprimirTO.Imprime(descuentoTO.getTipoPercepcionDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
		
		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// DESCUENTOPUESTO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<DESCUENTOPUESTO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			PuestoTO puestoTO = new PuestoTO();
			puestoTO.setIdPuesto((short)1);
			
			DescuentoTO descuentoTO = new DescuentoTO();
			descuentoTO.setIdDescuento(1);

			DescuentoPuestoDAO descuentoPuestoDAO = fabricaMySQL.getDescuentoPuestoDAO();
			DescuentoPuestoTO descuentoPuestoTO = new DescuentoPuestoTO(descuentoTO,puestoTO);

			// insert
			if (descuentoPuestoDAO.insertDescuentoPuesto(descuentoPuestoTO)) {
				//descuentoPuestoDAO.insertDescuentoPuesto(descuentoPuestoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");
		

			// actualiza
			
			PuestoTO puestoTO2 = new PuestoTO();
			puestoTO2.setIdPuesto((short)2);
			DescuentoPuestoTO descuentoPuestoTONuevo = new DescuentoPuestoTO(descuentoTO,puestoTO2);

			resultado = descuentoPuestoDAO.updateDescuentoPuesto(descuentoPuestoTO,descuentoPuestoTONuevo);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			descuentoPuestoTO = descuentoPuestoDAO.findDescuentoPuestoByDescuentoPuesto(descuentoTO.getIdDescuento(), puestoTO.getIdPuesto());
			if (descuentoPuestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("DESCUENTOPUESTO");
				ImprimirTO.Imprime(descuentoPuestoTO);
				System.out.println("DESCUENTO");
				ImprimirTO.Imprime(descuentoPuestoTO.getDescuentoTO());
				System.out.println("PUESTO");
				ImprimirTO.Imprime(descuentoPuestoTO.getPuestoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT DESCUENTOPUESTO +**");
			java.util.Collection<DescuentoPuestoTO> listDescuentoPuestoTO = descuentoPuestoDAO
					.selectDescuentoPuesto();
			if (listDescuentoPuestoTO != null) {
				for (int i = 0; i < listDescuentoPuestoTO.size(); i++) {
					descuentoPuestoTO = ((ArrayList<DescuentoPuestoTO>) listDescuentoPuestoTO)
							.get(i);
					System.out.println("DESCUENTOPUESTO");
					ImprimirTO.Imprime(descuentoPuestoTO);
					System.out.println("DESCUENTO");
					ImprimirTO.Imprime(descuentoPuestoTO.getDescuentoTO());
					System.out.println("PUESTO");
					ImprimirTO.Imprime(descuentoPuestoTO.getPuestoTO());

				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}
			
			

			// Busca
			System.out.println("------------------- BUSQUEDA POR DESCUENTO");
			descuentoPuestoTO = descuentoPuestoDAO.selectDescuentoPuestoByDescuento(1);
			if (descuentoPuestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("DESCUENTOPUESTO");

				for (int x = 0; x < descuentoPuestoTO.getListPuestoTO().length; x++) {
					System.out.println("PUESTO");
					ImprimirTO.Imprime(descuentoPuestoTO.getListPuestoTO()[x]);
				}
				

				System.out.println("DESCUENTO");
				ImprimirTO.Imprime(descuentoPuestoTO.getDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca
			System.out.println("------------------- BUSQUEDA POR PUESTO");
			descuentoPuestoTO = descuentoPuestoDAO.selectDescuentoPuestoByPuesto((short)4);
			if (descuentoPuestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("DESCUENTOPUESTO");

				for (int x = 0; x < descuentoPuestoTO.getListDescuentoTO().length; x++) {
					System.out.println("DESCUENTO");
					ImprimirTO.Imprime(descuentoPuestoTO.getListDescuentoTO()[x]);
				}
				

				System.out.println("PUESTO");
				ImprimirTO.Imprime(descuentoPuestoTO.getPuestoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

	}

}
